package com.yuntai.pms.model.api.connection;


import com.yuntai.pms.model.dto.connection.AppMethodRefDto;
import com.yuntai.pms.model.entity.handler.GroupServerInfo;
import com.yuntai.pms.model.vo.connection.AppMethodRefVo;
import com.yuntai.pms.model.vo.handler.MethodRegisterVo;

import java.util.List;

/**
 * @author 杨训亮
 * @version V1.0
 * @Title: openapi
 * @Package com.yuntai.openapi.platform.service.connection
 * @Description: ${todo}(用一句话描述该文件做什么)
 * @date 2017/8/2 21:58
 */
public interface AppMethodRefService {

    /**
     * @param num    获取的个数
     * @param offSet 开始获取的位置，默认为0
     * @return
     */
    List<AppMethodRefVo> queryAllIsvMethod(Integer num, Long offSet);

    /**
     * 获取满足条件个数
     *
     * @param dto
     * @return
     */
    Long size();

    /**
     * 查询
     *
     * @param dto
     * @return
     */
    List<AppMethodRefVo> query(AppMethodRefDto dto);

    /**
     * 保存
     *
     * @param dto
     * @return
     */
    Boolean save(AppMethodRefDto dto);

    /**
     * 保存
     *
     * @param dtos
     * @return
     */
    List<AppMethodRefDto> save(List<AppMethodRefDto> dtos);

    /**
     * 更新
     *
     * @param dto
     * @return
     */
    Boolean update(AppMethodRefDto dto);

    /**
     * 更新
     *
     * @param dtos
     * @return
     */
    List<AppMethodRefDto> update(List<AppMethodRefDto> dtos);


    /**
     * 删除
     *
     * @param dto
     * @return
     */
    Boolean delete(AppMethodRefDto dto);

    /**
     * @Title: processInfo
     * @Description: 为GroupServerInfo的每个MethodRegisterVo设置checked属性
     * @param appId
     * @param groupInfos
     * @return
     */
    List<MethodRegisterVo> processInfo(Long appId, List<MethodRegisterVo> serverInfos);

    /**
	 * @Title: cleanDisabledAuthority
	 * @Description: 去除权限
	 * @param appId
	 * @param ids
	 */
	void cleanDisabledAuthority(Long appId, Long[] ids);
	
	/**
	 * @Title: appAuthorize
	 * @Description: 授权
	 * @param appId
	 * @param isvAppId 
	 * @param ids
	 */
	void appAuthorize(Long appId, Long isvAppId, String[] addObjs);

	/**
     * 封装成Group，server和Methods对应的结构体
     * @param methodRegisterVos
     * @return
     */
	List<GroupServerInfo> wrapGroupServerInfo(List<MethodRegisterVo> methodRegisterVos);


	void appAuthorizeNew(Long aipAppId,String appId,String[] addObjs);
}
